/*
 * MoveChecker.h
 *
 * Class that calculates valid moves of pieces
 */

#ifndef MOVECHECKER_H_
#define MOVECHECKER_H_

class Board;
#include <vector>
#include "Position.h"




using namespace std;

class MoveChecker{
private:
	Board *board;				//Pointer to board

public:
	MoveChecker(Board *_board);						//Constructor
	~MoveChecker();									//Deconstructor
	vector<Position> getValidMoves(Position& src);	//Returns Valid moves of a given piece
													//A move that leaves player in check is invalid
													//If a piece can make no valid moves and empty vector is returned
													//If the src position is not a valid piece a NULL pointer is returned
	vector<Position> getMovesDirect(Position& src); //Returns moves of a given piece
													//Does not check for resultant checks
													//Used a avoid recursive calls and getValidMoves()

};

#endif /* MOVECHECKER_H_ */
